unit DM_Persistencia;

interface

uses
  SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset,
  ZAbstractTable, ZDataset, ZConnection, IniFiles, JvComponentBase,
  JvAppStorage, JvAppIniStorage;

type
  TDM_Persistence = class(TDataModule)
    DBConnection: TZConnection;
    ZT_Carreras: TZTable;
    ZT_Materias: TZTable;
    ZT_Anio: TZTable;
    ZT_Cuatrimestre: TZTable;
    DS_Carrera: TDataSource;
    ZT_Documentos_por_Materia: TZTable;
    ZT_Documentos_por_MateriaFK_ID_DOCUMENTO: TIntegerField;
    ZT_Documentos_por_MateriaFK_ID_MATERIA: TIntegerField;
    ZT_Documentos_por_MateriaDESCRIPCION_MATERIA: TStringField;
    ZT_Carreras_Por_Materia: TZTable;
    ZT_Carreras_Por_MateriaFK_IDMATERIA: TIntegerField;
    ZT_Carreras_Por_MateriaFK_IDCARRERA: TIntegerField;
    ZT_Carreras_Por_MateriaDESCRIPCION_CARRERA: TStringField;
    ZT_MateriasID: TIntegerField;
    ZT_MateriasDENOMINACION: TStringField;
    ZT_MateriasCODIGO: TIntegerField;
    ZT_Carreras_Por_MateriaANIO: TIntegerField;
    ZT_Carreras_Por_MateriaCUATRIMESTRE: TIntegerField;
    ZT_Carreras_Por_MateriaDESCRIPCION_ANIO: TStringField;
    ZT_Carreras_Por_MateriaDESCRIPCION_CUATRIMESTRE: TStringField;
    ZT_Carreras_Por_MateriaDESCRIPCION_MATERIA: TStringField;
    ZT_Tipo_Cuenta: TZTable;
    ZT_Estado_Orden: TZTable;
    ZT_Productos: TZTable;
    ZT_Detalle_Precio: TZTable;
    DS_Producto: TDataSource;
    ZT_ProductosID: TIntegerField;
    ZT_ProductosNOMBRE: TStringField;
    JvAppIniFileStorage: TJvAppIniFileStorage;
    procedure DataModuleDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CargarConfiguracion;
    procedure ActivarTables;
    procedure ActivarTablesSinCargarConfig;
    procedure FormatFields;
  end;

var
  DM_Persistence: TDM_Persistence;

implementation

uses F_Funciones;

{$R *.dfm}

procedure TDM_Persistence.ActivarTablesSinCargarConfig;
var i:integer;
begin
  DBConnection.Disconnect;

  DBConnection.Connect;

  for i:=0 to ComponentCount -1 do
    begin
    if (components[i] is TZTable) then
         TZTable(components[i]).Active:=True;
    end;
end;

procedure TDM_Persistence.ActivarTables;
var i:integer;
begin
  DBConnection.Disconnect;

  CargarConfiguracion;

  DBConnection.Connect;

  for i:=0 to ComponentCount -1 do
    begin
    if (components[i] is TZTable) then
         TZTable(components[i]).Active:=True;
    end;
end;

procedure TDM_Persistence.CargarConfiguracion;
begin
    DBConnection.HostName := ReadIniFile('Conexion','Host','');
end;

procedure TDM_Persistence.FormatFields;
begin
  // Formateando filas de costo
  TFloatField(ZT_Detalle_Precio.FindField('PRECIO')).DisplayFormat := '$ ,0.000';
end;

procedure TDM_Persistence.DataModuleDestroy(Sender: TObject);
begin
  DBConnection.Disconnect;
end;

end.
